package kd.bos.openapi.sdk.util;

import org.apache.commons.lang3.StringUtils;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * @author johnz
 * @Deacription 时间工具类
 * @date 2022年4月6日
 */
public class DateUtil {

    /**
     * 时间格式化
     * @param date
     * @param format
     * @return
     */
    public static String format(Date date, String format) {
        if (null != date && !StringUtils.isBlank(format)) {
            SimpleDateFormat sdf = new SimpleDateFormat(format);
            return sdf.format(date);
        } else {
            return null;
        }
    }

    /**
     * Date时间转换 Calendar
     * @param date
     * @return
     */
    public static Calendar dateToCalendar(Date date){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar;
    }

    /**
     * 对日期的【秒】进行加/减
     *
     * @param date 日期
     * @param seconds 秒数，负数为减
     * @return 加/减几秒后的日期
     */
    public static Date addDateSeconds(Date date, int seconds) {
        Calendar cal = dateToCalendar(date);
        cal.add(Calendar.SECOND, seconds);
        Date time = cal.getTime();
        return time;
    }


    /**
     * 对日期的【分钟】进行加/减
     *
     * @param date 日期
     * @param minutes 分钟数，负数为减
     * @return 加/减几分钟后的日期
     */
    public static Date addDateMinutes(Date date, int minutes) {
        Calendar cal = dateToCalendar(date);
        cal.add(Calendar.MINUTE, minutes);
        Date time = cal.getTime();
        return time;
    }

    /**
     * 对日期的【小时】进行加/减
     *
     * @param date 日期
     * @param hours 小时数，负数为减
     * @return 加/减几小时后的日期
     */
    public static Date addDateHours(Date date, int hours) {
        Calendar cal = dateToCalendar(date);
        cal.add(Calendar.HOUR, hours);
        Date time = cal.getTime();
        return time;
    }

    /**
     * 对日期的【天】进行加/减
     *
     * @param date 日期
     * @param days 天数，负数为减
     * @return 加/减几天后的日期
     */
    public static Date addDateDays(Date date, int days) {
        Calendar cal = dateToCalendar(date);
        cal.add(Calendar.DATE, days);
        Date time = cal.getTime();
        return time;
    }



}
